#ifndef _VGPSPRITE_H_
#define _VGPSPRITE_H_

#include "cocos2d.h"


class VGPSprite
{
protected:
	static VGPSprite* instance;

public:
	static VGPSprite* getInstance();

	/*
	----------------Create a frame with params--------------------------	
	@param spriteID:	sprite ID	
	@param frameID:		framID
	@param position		position of animation
	@param zOrder		Z order for drawing priority. Default 0
    @param tag			A interger to identify the node easily. Default -1
	*/
	cocos2d::CCSprite* createFrame ( int spriteID, int frameID, 
								cocos2d::CCPoint position, int zOrder, int tag );
	
	/*
	----------------Create a frame with params--------------------------
	@param spriteID:	sprite ID	
	@param frameID:		framID
	@param position		position of animation
	@param zOrder		Z order for drawing priority. Default 0    
	*/
	cocos2d::CCSprite* createFrame ( int spriteID, int frameID, 
								cocos2d::CCPoint position, int zOrder );

	/*
	----------------Create a frame with params--------------------------	
	@param spriteID:	sprite ID	
	@param frameID:		framID
	@param position		position of animation	
	*/
	cocos2d::CCSprite* createFrame ( int spriteID, int frameID, cocos2d::CCPoint position );	

	/*
	----------------Add a frame with params--------------------------	
	@param layer:		layer contain frame
	@param spriteID:	sprite ID	
	@param frameID:		framID
	@param position		position of animation
	@param zOrder		Z order for drawing priority. Default 0
    @param tag			A interger to identify the node easily. Default -1
	*/
	void addFrame ( cocos2d::CCLayer* layer, int spriteID, int frameID, 
								cocos2d::CCPoint position, int zOrder, int tag );
	
	/*
	----------------Add a frame with params--------------------------
	@param layer:		layer contain frame	
	@param spriteID:	sprite ID	
	@param frameID:		framID
	@param position		position of animation
	@param zOrder		Z order for drawing priority. Default 0    
	*/
	void addFrame ( cocos2d::CCLayer* layer, int spriteID, int frameID, 
								cocos2d::CCPoint position, int zOrder );

	/*
	----------------Add a frame with params--------------------------
	@param layer:		layer contain frame	
	@param spriteID:	sprite ID	
	@param frameID:		framID
	@param position		position of animation	
	*/
	void addFrame (  cocos2d::CCLayer* layer, int spriteID, int frameID, cocos2d::CCPoint position );	

	/*
	----------------Create a animation with params--------------------------
	@param layer:		layer contain animation
	@param spriteID:	sprite ID
	@param frameBegin:	frame begin
	@param frameEnd:	frame end
	@param delay:		delay
	@param loop:		-1: loop forever, 1, 2, 3... loop once, twice, three time...
	@param position		position of animation
	@param zOrder		Z order for drawing priority. Default 0
    @param tag			A interger to identify the node easily. Default -1
	*/
	cocos2d::CCSprite* createAnimation ( int spriteID, int animID, 
								float delay, int loop, cocos2d::CCPoint position, int zOrder, int tag );

	/*
	----------------Create a animation with params--------------------------
	@param layer:		layer contain animation
	@param spriteID:	sprite ID
	@param frameBegin:	frame begin
	@param frameEnd:	frame end
	@param delay:		delay
	@param loop:		-1: loop forever, 1, 2, 3... loop once, twice, three time...
	@param position		position of animation
	@param zOrder		Z order for drawing priority   
	*/
	cocos2d::CCSprite* createAnimation ( int spriteID, int animID, 
								float delay, int loop, cocos2d::CCPoint position, int zOrder );

	/*
	----------------Create a animation with params--------------------------
	@param layer:		layer contain animation
	@param spriteID:	sprite ID
	@param frameBegin:	frame begin
	@param frameEnd:	frame end
	@param delay:		delay
	@param loop:		-1: loop forever, 1, 2, 3... loop once, twice, three time...
	@param position		position of animation	
	*/
	cocos2d::CCSprite* createAnimation ( int spriteID, int animID, 
								float delay, int loop, cocos2d::CCPoint position);	

	/*
	----------------Add a animation with params--------------------------
	@param layer:		layer contain animation
	@param spriteID:	sprite ID
	@param frameBegin:	frame begin
	@param frameEnd:	frame end
	@param delay:		delay
	@param loop:		-1: loop forever, 1, 2, 3... loop once, twice, three time...
	@param position		position of animation
	@param zOrder		Z order for drawing priority. Default 0
    @param tag			A interger to identify the node easily. Default -1
	*/
	void addAnimation ( cocos2d::CCLayer* layer, int spriteID, int animID, 
								float delay, int loop, cocos2d::CCPoint position, int zOrder, int tag );

	/*
	----------------Add a animation with params--------------------------
	@param layer:		layer contain animation
	@param spriteID:	sprite ID
	@param frameBegin:	frame begin
	@param frameEnd:	frame end
	@param delay:		delay
	@param loop:		-1: loop forever, 1, 2, 3... loop once, twice, three time...
	@param position		position of animation
	@param zOrder		Z order for drawing priority   
	*/
	void addAnimation ( cocos2d::CCLayer* layer, int spriteID, int animID, 
								float delay, int loop, cocos2d::CCPoint position, int zOrder );

	/*
	----------------Add a animation with params--------------------------
	@param layer:		layer contain animation
	@param spriteID:	sprite ID
	@param frameBegin:	frame begin
	@param frameEnd:	frame end
	@param delay:		delay
	@param loop:		-1: loop forever, 1, 2, 3... loop once, twice, three time...
	@param position		position of animation	
	*/
	void addAnimation ( cocos2d::CCLayer* layer, int spriteID, int animID, 
								float delay, int loop, cocos2d::CCPoint position);	

	/*
	---------------------Create a frame move from source to destination------------
	@param spriteID:		spriteID
	@param frameID:			frameID
	@param srcPosition:		source point
	@param desPosition:		destination point
	@param jumpStep:		step jump ( by pixel )
	@param position			position of animation
	@param zOrder			Z order for drawing priority. Default 0
    @param tag				A interger to identify the node easily. Default -1
	*/
	cocos2d::CCSprite* createFrameMove ( int spriteID, int frameID, cocos2d::CCPoint srcPosition, 
								cocos2d::CCPoint desPosition, int jumpStep, int zOrder, int tag );
								
	/*
	---------------------Create a frame move from source to destination------------
	@param spriteID:		spriteID
	@param frameID:			frameID
	@param srcPosition:		source point
	@param desPosition:		destination point
	@param jumpStep:		step jump ( by pixel )
	@param position			position of animation
	@param zOrder			Z order for drawing priority. Default 0    
	*/
	cocos2d::CCSprite* createFrameMove ( int spriteID, int frameID, cocos2d::CCPoint srcPosition, 
								cocos2d::CCPoint desPosition, int jumpStep, int zOrder );
	/*
	---------------------Create a frame move from source to destination------------
	@param spriteID:		spriteID
	@param frameID:			frameID
	@param srcPosition:		source point
	@param desPosition:		destination point
	@param jumpStep:		step jump ( by pixel )
	@param position			position of animation	
	*/
	cocos2d::CCSprite* createFrameMove ( int spriteID, int frameID, cocos2d::CCPoint srcPosition, 
								cocos2d::CCPoint desPosition, int jumpStep );
								
	/*
	---------------------Add a frame move from source to destination------------
	@param layer:			layer contain frame move
	@param spriteID:		spriteID
	@param frameID:			frameID
	@param srcPosition:		source point
	@param desPosition:		destination point
	@param jumpStep:		step jump ( by pixel )
	@param position			position of animation
	@param zOrder			Z order for drawing priority. Default 0
    @param tag				A interger to identify the node easily. Default -1
	*/
	void addFrameMove ( cocos2d::CCLayer* layer, int spriteID, int frameID, cocos2d::CCPoint srcPosition, 
								cocos2d::CCPoint desPosition, int jumpStep, int zOrder, int tag );
	
	/*
	---------------------Add a frame move from source to destination------------
	@param layer:			layer contain frame move
	@param spriteID:		spriteID
	@param frameID:			frameID
	@param srcPosition:		source point
	@param desPosition:		destination point
	@param jumpStep:		step jump ( by pixel )
	@param position			position of animation
	@param zOrder			Z order for drawing priority. Default 0    
	*/
	void addFrameMove ( cocos2d::CCLayer* layer, int spriteID, int frameID, cocos2d::CCPoint srcPosition, 
								cocos2d::CCPoint desPosition, int jumpStep, int zOrder );
	/*
	---------------------Add a frame move from source to destination------------
	@param layer:			layer contain frame move
	@param spriteID:		spriteID
	@param frameID:			frameID
	@param srcPosition:		source point
	@param desPosition:		destination point
	@param jumpStep:		step jump ( by pixel )
	@param position			position of animation   
	*/
	void addFrameMove ( cocos2d::CCLayer* layer, int spriteID, int frameID, cocos2d::CCPoint srcPosition, 
								cocos2d::CCPoint desPosition, int jumpStep );

	/*
	--------------------Create button to press---------------------------------------
	*/
	cocos2d::CCMenuItemSprite* createButton ( int spriteID, int frameID, int frameSelectID, cocos2d::CCPoint position, int zOrder, int tag );

	/*
	--------------------Create button to press---------------------------------------
	*/
	cocos2d::CCMenuItemSprite* createButton ( int spriteID, int frameID, int frameSelectID, cocos2d::CCPoint position, int zOrder );

	/*
	--------------------Create button to press---------------------------------------
	*/
	cocos2d::CCMenuItemSprite* createButton ( int spriteID, int frameID, int frameSelectID, cocos2d::CCPoint position );

	/*
	--------------------Add button to press---------------------------------------
	*/
	void addButton ( cocos2d::CCLayer* layer, int spriteID, int frameID, int frameSelectID, cocos2d::CCPoint position, int zOrder, int tag );

	/*
	--------------------Add button to press---------------------------------------
	*/
	void addButton ( cocos2d::CCLayer* layer, int spriteID, int frameID, int frameSelectID, cocos2d::CCPoint position, int zOrder );

	/*
	--------------------Add button to press---------------------------------------
	*/
	void addButton ( cocos2d::CCLayer* layer, int spriteID, int frameID, int frameSelectID, cocos2d::CCPoint position );
};
#endif